--------------------
-------------------- INSERISCO DATI DA TUTELA
-----------------------------------------------

insert into ASM_switch_1
SELECT DISTINCT * FROM
(
select 
'' tipo_utente,
a.IVA_TITOLARE,
a.NOME_titolare TITOLARE_SWITCH,
a.POD sw_pod,
a.IVA_UT SW_PIVA_UTIL,
a.CF_UT sw_COD_FIS_UTIL,
a.RS_UT  UTILIZZATORE_SWITCH,
--contratti.codice_contratto,
pe.NOMINATIVO_RAG_SOC UTILIZZATORE_FIMM,pe.PARTITA_IVA,pe.CODICE_FISCALE,indirizzi.TOPONIMO_VIA,
concat(concat (trim(indirizzi.PREFISSO_VIA),' '),indirizzi.DENOMINAZIONE_VIA) indirizzo,
indirizzi.CIVICO,indirizzi.COMUNE,indirizzi.PROVINCIA,
A.pod,a.stato_contratto,a.potenza_tollerata,a.potenza_impegnata,a.opzione_tar,a.codice_modello_contatore,
a.matricola_contatore,
a.numero_cifre_intere,
tensione,
voltaggio_minimo,
voltaggio_massimo,
fattore_correttivo,data_mov,

consumo consumo_f1,lettura lettuta_f1, 
consumo_c2 consumo_f2,lettura_c2 lettura_f2, 
consumo_c3 consumo_f3,lettura_c3 lettura_f3,

consumo_r1 ,lettura_r1, 
consumo_r2 ,lettura_r2 , 
consumo_r3 ,lettura_r3,

indice_massima_1 consumo_m1, lettura_m1 ,
indice_massima_2 consumo_m2, lettura_m2 ,
indice_massima_3 consumo_m3, lettura_m3,
per.NOMINATIVO_RAG_SOC titolare_FIMM,
contratti.CODICE_GRUPPO_BOLLETTAZIONE,

       CASE WHEN  trim(a.iva_ut) = trim(per.partita_iva)  or  (trim(a.iva_ut) is null  and trim(per.partita_iva) is null)
 THEN '' ELSE 'ERRORE piva' END errore_iva,
 CASE WHEN  trim(a.cf_ut) = trim(per.codice_fiscale)  or  (trim(a.cf_ut) is null  and trim(per.codice_fiscale) is null)
 THEN '' ELSE 'ERRORE codice_fisc' END errore_cod_fisc,
 case when a.pod is null then 'ERRORE pod' end ERRORE_POD

from db5.contratti_aggregazioni ca,--db5.utenze ut,
db5.persone pe,db5.contratti,db5.indirizzi,db5.persone per,
(
select 
sw.db,cm.codice_allacciamento,cm.progressivo_utenza,contratti.codice_contratto,contratti.codice_utente,

sw.IVA_TITOLARE,
sw.NOME_titolare ,
sw.POD ,
sw.IVA_UT ,
sw.CF_UT ,
sw.RS_UT  ,
          
         contratti.STATO_CONTRATTO,
         contratti.DATA_AVVIO,
         contratti.POTENZA_TOLLERATA,
          contratti.POTENZA_IMPEGNATA,
           trim(gruppi.OPZIONE_TAR) opzione_tar,
         cm.codice_modello_contatore,
         cm.MATRICOLA_CONTATORE,
         cr.numero_cifre_intere,
         mc.TENSIONE,
         mc.voltaggio_minimo,
         mc.voltaggio_massimo,
         fo.fattore_correttivo,
         case when contratti.codice_tipo_uso = 'N' and contratti.codice_tariffa = '10' then 'DOM NON RESID.' else
                case when  contratti.codice_tariffa = '10' then 'DOM RESIDENTE' end else 'ALTRI USI' end tariffa,
                
         to_char(cm.DATA_MOVIMENTO,'yyyymmdd') data_mov,
         cm.consumo,
         cm.LETTURA,
         ls.CONSUMO_C2,
         ls.LETTURA_C2,
         ls.CONSUMO_C3,
         ls.LETTURA_C3,
         ls.consumo_r1,
         ls.LETTURA_r1,
         ls.CONSUMO_r2,
         ls.LETTURA_r2,
         ls.CONSUMO_r3,
         ls.LETTURA_r3,
         ls.indice_massima_1,
         ls.LETTURA_m1,
         ls.indice_massima_2,
         ls.LETTURA_m2,
         ls.indice_massima_3,
         ls.LETTURA_m3
         
         
   
         
        



 from 
  db5.contratti,db5.modelli_contatore mc,db1.ASM_switch sw,db5.forniture fo,
     
      db5.contatori_movimenti cm ,db5.contatori_movimenti_ls ls,db5.utenze ut,db5.contatori cr,db5.gruppi
 where 
 
 
 sw.pod =concat('IT018E',concat(substr(concat('000000',cm.codice_allacciamento(+)),-7,7),
            substr(concat('000000',cm.progressivo_utenza(+)),-1,1)))

AND sw.DB ='db5'
and contratti.CODICE_TARIFFA = gruppi.CODICE_TARIFFA
and contratti.CODICE_TIPO_USO = gruppi.CODICE_TIPO_USO
and contratti.CODICE_USO = gruppi.CODICE_USO
and fo.CODICE_GESTIONE=CONTRATTI.CODICE_GESTIONE
and fo.CODICE_SERVIZIO=CONTRATTI.CODICE_SERVIZIO
and fo.CODICE_CONTRATTO=contratti.codice_contratto
and fo.CODICE_ALLACCIAMENTO=ut.codice_allacciamento
and fo.PROGRESSIVO_UTENZA=ut.progressivo_utenza

       
AND CONTRATTI.CODICE_GESTIONE = 'UNRG'
AND CONTRATTI.CODICE_SERVIZIO = 'E'
and ut.codice_allacciamento = cm.codice_allacciamento
and ut.progressivo_utenza = cm.progressivo_utenza
and ut.CODICE_GESTIONE ='UNRG'
and ut.CODICE_SERVIZIO ='E'
and mc.codice_modello_contatore = cm.CODICE_MODELLO_CONTATORE
and mc.codice_servizio = 'E'
and cm.CODICE_SERVIZIO = 'E'
and cm.codice_gestione = 'UNRG'
and cm.codice_contratto = contratti.codice_contratto
and ls.CODICE_SERVIZIO(+) = 'E'
and cm.CODICE_MODELLO_CONTATORE = ls.CODICE_MODELLO_CONTATORE(+)
and cm.matricola_contatore = ls.matricola_contatore(+)
and cm.PROGRESSIVO_MOVIMENTO = ls.PROGRESSIVO_MOVIMENTO(+)
--  and       ( cm.consumo <> 0
-- or       cm.LETTURA <> 0
--   or      ls.CONSUMO_C2 <> 0
--   or         ls.LETTURA_C2 <> 0
--  or       ls.CONSUMO_C3 <> 0
--   or      ls.LETTURA_C3 <> 0
--    or       ls.consumo_r1 <> 0
--   or        ls.LETTURA_r1 <> 0
--   or         ls.CONSUMO_r2 <> 0
--   or         ls.LETTURA_r2 <> 0
--   or         ls.CONSUMO_r3 <> 0
--   or       ls.LETTURA_r3 <> 0
--    or       ls.indice_massima_1 <> 0
--   or         ls.LETTURA_m1 <> 0
--  or         ls.indice_massima_2 <> 0
--   or        ls.LETTURA_m2 <> 0
--  or       ls.indice_massima_2 <> 0
--   or        ls.LETTURA_m3  <> 0)
   and cr.codice_servizio = 'E'
   and cr.codice_modello_contatore = cm.CODICE_MODELLO_CONTATORE
   and cr.matricola_contatore =cm.MATRICOLA_CONTATORE
--AND cm.data_movimento >= TO_date ('01/06/2011','dd/mm/yyyy')
--and cm.data_movimento <= TO_date ('01/07/2011','dd/mm/yyyy')
AND cm.data_movimento >= TO_date (^data inizio periodo gg/mm/aaaa ;A;Alfanumerico^^,'dd/mm/yyyy')
and cm.data_movimento <= TO_date (^data fine periodo gg/mm/aaaa ;A;Alfanumerico^^,'dd/mm/yyyy')
      




)  A

where


     ca.codice_gestione  = 'UNRG'
  
and CONTRATTI.CODICE_CONTRATTO = a.codice_contratto
   
       
AND CONTRATTI.CODICE_GESTIONE = 'UNRG'
AND CONTRATTI.CODICE_SERVIZIO = 'E'
and ca.codice_utente = contratti.CODICE_UTENTE
and ca.CODICE_PERSONA_utilizzatore = pe.CODICE_PERSONA
and ca.CODICE_PERSONA_TITOLARE = per.codice_persona
and indirizzi.CODICE_INDIRIZZO = ca.CODICE_INDIRIZZO_utilizzatore



UNION


select 
'' tipo_utente,
swt.IVA_TITOLARE,
swt.NOME_titolare TITOLARE_SWITCH,
swt.POD sw_pod,
swt.IVA_UT SW_PIVA_UTIL,
swt.CF_UT sw_COD_FIS_UTIL,
        swt.RS_UT  UTILIZZATORE_SWITCH,

pe.NOMINATIVO_RAG_SOC UTILIZZATORE_FIMM,pe.PARTITA_IVA,pe.CODICE_FISCALE,indirizzi.TOPONIMO_VIA,
concat(concat (trim(indirizzi.PREFISSO_VIA),' '),indirizzi.DENOMINAZIONE_VIA) indirizzo,
indirizzi.CIVICO,indirizzi.COMUNE,indirizzi.PROVINCIA,
A.pod,a.stato_contratto,a.potenza_tollerata,a.potenza_impegnata,a.opzione_tar,a.codice_modello_contatore,
a.matricola_contatore,
a.numero_cifre_intere,
tensione,
voltaggio_minimo,
voltaggio_massimo,
fattore_correttivo,data_mov,

consumo consumo_f1,lettura lettuta_f1, 
consumo_c2 consumo_f2,lettura_c2 lettura_f2, 
consumo_c3 consumo_f3,lettura_c3 lettura_f3,

consumo_r1 ,lettura_r1, 
consumo_r2 ,lettura_r2 , 
consumo_r3 ,lettura_r3,

indice_massima_1 consumo_m1, lettura_m1 ,
indice_massima_2 consumo_m2, lettura_m2 ,
indice_massima_3 consumo_m3, lettura_m3,
per.NOMINATIVO_RAG_SOC titolare_FIMM,
contratti.CODICE_GRUPPO_BOLLETTAZIONE,

       CASE WHEN  trim(swt.iva_ut) = trim(per.partita_iva)  or  (trim(swt.iva_ut) is null  and trim(per.partita_iva) is null)
 THEN '' ELSE 'ERRORE piva' END errore_iva,
 CASE WHEN  trim(swt.cf_ut) = trim(per.codice_fiscale)  or  (trim(swt.cf_ut) is null  and trim(per.codice_fiscale) is null)
 THEN '' ELSE 'ERRORE codice_fisc' END errore_cod_fisc,
 case when swt.pod is null then 'ERRORE pod' end ERRORE_POD

from db5.contratti_aggregazioni ca,--db5.utenze ut,
db5.persone pe,db5.contratti,db5.indirizzi,db5.persone per,ASM_switch swt,
(
select 
cm.codice_allacciamento,cm.progressivo_utenza,contratti.codice_contratto,contratti.codice_utente,
concat('IT018E',
concat(substr(concat('000000',cm.codice_allacciamento),-7,7),
         substr(concat('000000',cm.progressivo_utenza),-1,1))) pod,
          
         contratti.STATO_CONTRATTO,
         contratti.DATA_AVVIO,
         contratti.POTENZA_TOLLERATA,
          contratti.POTENZA_IMPEGNATA,
           trim(gruppi.OPZIONE_TAR) opzione_tar,
         cm.codice_modello_contatore,
         cm.MATRICOLA_CONTATORE,
         cr.numero_cifre_intere,
         mc.TENSIONE,
         mc.voltaggio_minimo,
         mc.voltaggio_massimo,
         K fattore_correttivo,
         case when contratti.codice_tipo_uso = 'N' and contratti.codice_tariffa = '10' then 'DOM NON RESID.' else
                case when  contratti.codice_tariffa = '10' then 'DOM RESIDENTE' end else 'ALTRI USI' end tariffa,
                
         to_char(cm.DATA_MOVIMENTO,'yyyymmdd') data_mov,
         cm.consumo,
         cm.LETTURA,
         ls.CONSUMO_C2,
         ls.LETTURA_C2,
         ls.CONSUMO_C3,
         ls.LETTURA_C3,
         ls.consumo_r1,
         ls.LETTURA_r1,
         ls.CONSUMO_r2,
         ls.LETTURA_r2,
         ls.CONSUMO_r3,
         ls.LETTURA_r3,
         ls.indice_massima_1,
         ls.LETTURA_m1,
         ls.indice_massima_2,
         ls.LETTURA_m2,
         ls.indice_massima_3,
         ls.LETTURA_m3
         
         
   
         
        



 from 
  db5.contratti,db5.modelli_contatore mc,ASM_switch_2 sw2,
     
      db5.contatori_movimenti cm ,db5.contatori_movimenti_ls ls,db5.utenze ut,db5.contatori cr,db5.gruppi
 where 
 
 

  cm.codice_allacciamento=sw2.codice_allacciamento
 and cm.progressivo_utenza = sw2.progressivo_utenza
 and cm.data_movimento = sw2.data

and contratti.CODICE_TARIFFA = gruppi.CODICE_TARIFFA
and contratti.CODICE_TIPO_USO = gruppi.CODICE_TIPO_USO
and contratti.CODICE_USO = gruppi.CODICE_USO


       
AND CONTRATTI.CODICE_GESTIONE = 'UNRG'
AND CONTRATTI.CODICE_SERVIZIO = 'E'
and ut.codice_allacciamento = cm.codice_allacciamento
and ut.progressivo_utenza = cm.progressivo_utenza
and ut.CODICE_GESTIONE ='UNRG'
and ut.CODICE_SERVIZIO ='E'
and mc.codice_modello_contatore = cm.CODICE_MODELLO_CONTATORE
and mc.codice_servizio = 'E'
and cm.CODICE_SERVIZIO = 'E'
and cm.codice_gestione = 'UNRG'
and cm.codice_contratto = contratti.codice_contratto
and ls.CODICE_SERVIZIO(+) = 'E'
and cm.CODICE_MODELLO_CONTATORE = ls.CODICE_MODELLO_CONTATORE(+)
and cm.matricola_contatore = ls.matricola_contatore(+)
and cm.PROGRESSIVO_MOVIMENTO = ls.PROGRESSIVO_MOVIMENTO(+)
--  and       ( cm.consumo <> 0
-- or       cm.LETTURA <> 0
--   or      ls.CONSUMO_C2 <> 0
--   or         ls.LETTURA_C2 <> 0
--  or       ls.CONSUMO_C3 <> 0
--   or      ls.LETTURA_C3 <> 0
--    or       ls.consumo_r1 <> 0
--   or        ls.LETTURA_r1 <> 0
--   or         ls.CONSUMO_r2 <> 0
--   or         ls.LETTURA_r2 <> 0
--   or         ls.CONSUMO_r3 <> 0
--   or       ls.LETTURA_r3 <> 0
--    or       ls.indice_massima_1 <> 0
--   or         ls.LETTURA_m1 <> 0
--  or         ls.indice_massima_2 <> 0
--   or        ls.LETTURA_m2 <> 0
--  or       ls.indice_massima_2 <> 0
--   or        ls.LETTURA_m3  <> 0)
   and cr.codice_servizio = 'E'
   and cr.codice_modello_contatore = cm.CODICE_MODELLO_CONTATORE
   and cr.matricola_contatore =cm.MATRICOLA_CONTATORE



--And sw2.codice_allacciamento = 1997177

)  A

where


     ca.codice_gestione  = 'UNRG'
 
and CONTRATTI.CODICE_CONTRATTO = a.codice_contratto
          
AND CONTRATTI.CODICE_GESTIONE = 'UNRG'
AND CONTRATTI.CODICE_SERVIZIO = 'E'
and ca.codice_utente = contratti.CODICE_UTENTE
and ca.CODICE_PERSONA_utilizzatore = pe.CODICE_PERSONA
and ca.CODICE_PERSONA_TITOLARE = per.codice_persona
and indirizzi.CODICE_INDIRIZZO = ca.CODICE_INDIRIZZO_utilizzatore
and a.POD = SWT.POD

)
